Codarea Multicanal AC-3
Aceasta sectiune descrie modul de operare al codorului multicanal AC-3. Codand mai multe canale ca o singura entitate algoritmul este mult mai eficient decat daca se coda fiecare canal separat, premitind in acest fel un debit net scazut al informatiei. Sunt prezentate si discutate principalele blocuri precum si principalele avantaje si limitari ale acestei tehnici de codare.
AC-3 este un algoritm de codare audio multicanal cu o complexitate scazuta si o inalta calitate a semnalului audio rezultat.
Prin codarea mai multor canale, ca o simpla entitate, algoritmul este capabil sa opereze la rate de transfer scazute, comparabile cu rata de transfer a unui singur canal necomprimat.
Dealtfel algoritmul AC-3 este independent de numarul de canale codate, implementarea curenta fiind standardizata la 5+1 canale aranjate dupa cum urmeaza:
-cinci canale in intreaga banda audio reprezentand Stanga, Centru, Dreapta, Surround Stanga, Surround Dreapta
-un canal de banda limitata pentru frecventele joase (Subwoofer Channel)
AC-3 transfera acest aranjament de canale cu un inalt grad de transparenta la un debit de minimum 320 kbit/s.
Urmatoarele capitole descriu functionarea algoritmului de codare AC-3
II. PRIVIRE DE ANSAMBLU ASUPRA PROCESULUI CODARII
La fel ca la codarea AC-2, cu un singur canal, din care deriva, AC-3 este, in fond, o transformare adaptiva bazata pe un codor liniar in frecventa utilizand bancuri de filtre care esantioneaza la frecvente critice. Filtrele sunt de tipul Princen-Bredley TDAC (Time Domain Alias Cancellation).
Principalul avantaj al codarii cu bancuri de filtre este acela ca zgomotul corespunzator cuantizarii si componentele senmalului audio util sunt tinute intr-o banda critica beneficiindu-se in acest fel de efectul de mascare prin putere (a zgomotului). In acest fel se minimizeaza debitul de date necesar codarii fara zgomot.
In prezenta regimului tranzitoriu, bancul de filtre isi poate reduce in maod dinamic dimensiunea blocului pentru a restrange zgomotul datorat cuantuizarii intr-o mica zona temporala.
O tehnica flexibila de alocare a bitilor este folosita pentru canalele multiple alocand bitii de-a lungul spectrului audio si la canalele unde este nevoie de ei. In procesul de alocare se tine seama si de efectul de mascare intra canal sau inter canal. Pentru frecventele inalte se codeaza separat si independent informatia despre putratoare si anvelopa.
Uramatoarele capitole descriu mai amanuntit functionarea codorului si decodorului.
III. PRINCIPALELE BLOCURI DE PROCESARE ALE CODORULUI
Datele de intrare in codorul AC-3 sunt structurate pe blocuri care impart semnalul in domenii de timp. Tipic un bloc are 512 esantioane care sunt depozitate intr-un buffer de intrare, corespunzator fiecarui canal, inainte de alte procesari.
Semnalul de intrare in codor este filtrat individual (fiecare canal) cu un FTS cu frecventa de taiere la 3 Hz pentru a elimina componenta continua din spectrul semnalului . Canalul de frecvente joase (subwoofer channel) este filtrat suplimentar cu un FTJ cu frecventa de taiere la 120 Hz
c. Detectia Regimului Tranzitoriu
Dupa filtrarea de la punctul b. semnalul de intrare este analizat cu un FTB la frecventa inalta pentru a detecta prezenta oscilatiilor datorate regimului tranzitoriu. Aceasta informatie este utilizata pentru a ajusta dimensiunea blocului la bancul de filre TDAC pentru a restange zgomotul de cuantizare, asociat regimului tranzitoriu, intr-o mica regiune temporala evitand nemascarea temporala.
Fiecare semnal de intrare corespunzator fiecarui canal este impartit in "ferestre" si filtrat cu un banc de filtre TDAC de analiza. Transformatrea TDAC este in esenta o transformare FFT. Aceasta implica o putere computationala redusa rezultand o buna selectivitate in frecventa, facilitand o implementare hardware cu cost redus si cu performante excelente.
La decodare se trece inapoi in domeniul timp cu ajutorul coeficientilor transformatei inverse TDAC folosind bancuri de filtre TDAC de sinteza. Ambele bancuri de filtre TDAC (de analiza si de sinteza) folosesc esantionarea la frecvente critice si reconstituie exact informatia audio fara pierderi. Filtrele folosesc blocuri care se suprapun in proportie de 50% pentru a evita discontinuitatile la marginile blocurilor. Avantajele codadrii sunt obtinute multumita cuantizarii selective a coeficientilor transformarii care contine informatia principala despre semnalul audio. Atata timp cat codorul nu adauga sau elimina informatie audibila, iesirea decodorului va suna la fel ca intrarea in codor.
e. Conversia la Virgula Mobila
Chiar atunci cand este implementat cu DSP-uri care lucreaza cu numere in virgula fixa coeficientii TDAC sunt convertiti in virgula mobila pentru blocurile de procesare ulterioare. Reprezentarea se face cu mantisa luand valori intre 0.5 si 1.0 si cu exponentul corespunzator. Aceasta prelucrare este facuta pentru a evita limitarile gamei dinamice a semnalului in etapele de procesare intermediare. Se mentine o gama dinamica mare si prin faptul ca acolo unde este nevoie se fac rescalari. Ca rezultat AC-3 conserva sunetul original prin utilizarea unor convertoare A/D si D/A cu rezolutie pe 18-22 de biti.
Reprezentarea datelor in virgula mobila, in particular prezenta exponentului, simplifica procesul computational facilitand calculele logarimice cum este cel al alocarii bitilor.
f. Precombinarea Purtatoarei
In general cantitatea de biti folositi pentru codarea sunetului cu canale multiple este direct proportionala cu radacina patrata di numarul canalelor. Daca, de exemplu, pentru codarea unui singur canal este nevoie de 128 kbiti/s pentru codarea a 5.1 canale este nevoie de 289 kbit/s, debit care se incadreaza comfortabil in 320kbit/s rata minima utilizata de AC-3. Aceasta arata ca semnalele multicanal pot fi codate economic utilizand o tehnica flexibila de alocare a bitilor.
Pentru semnale cu banda larga si continut bogat de informatie se foloseste precombinarea selectiva a componentelor purtatoarei de frecventa inalta.
Aceasta tehnica elimina informatia de localizare a frecventelor inalte redundanta si este bazata pe fenomenul psihoacustic conform caruia, la frecvente inalte, sistemul auditiv uman localizeaza sunetul mai degraba dupa "anvelopa" benzii critice care ajunge la urechea umana decat dupa semnalul insusi.
Acest comportament este exploatat in AC-3 separand subbenzile de frecventa inalta in componente corespunzatoare anvelopei si purtatoarei. In general informatia despre anvelopa se codeaza cu precizie mai mare decat informatia despre purtatoare si, daca este nevoie, se combina (cupleaza) selectiv componentele purtatoarele diferitelor canale. Acest fapt are un impact audibil minim atata timp cat localizarea informatiei este conservata in informatia despre anvelopa si purtatoarele s-ar fi combinat acustic oricum la urechea ascultatorului producand un rezultat echivalent.
Informatia codata despre purtatoare consta in cresterea exponentului si un vector continand valorile mantisei, pe cand informatia corespunzatoare anvelopei transmite un vector continand coeficienti de cuplaj.
Aceasta tehnica conserva cu acuratete informatiile spatiale si alte caracteristici sonice, nu numai pentru un canal separat dar creaza si o imagine fantoma care apare intre difuzoare. Dealtfel este conservata relatia dintre puterea acustica a fiecarei surse de semnal de intrare si puterea redata de difuzoarele fiecarui canal.
Principalul avantaj al codarii multicanal unificate este abilitatea rutinei de alocare de a folosi bitii de-a lungul spectrului de frecventa si la canalele unde sunt necesari pentru a urmarii variatia semnalului.
Algoritmul de alocare folosit la AC-3 analizeaza coeficientii TDAC si respecta relatia dintre canale si efectul de mascare pentru a calcula cu acuratete numarul de biti necesar cuantizarii mantisei. Calculul este facut asupra intregului ansamblu de canale folosind pentru alocare un debit comun de biti fixat initial.
Alocarea este facuta in asa fel incat abilitatea senmalului dintr-un canal de a masca zgomotul din alt canal sa fie limitata si sa varieze depinzand de pozitia ascultatorului.
Codorul si decodorul folosesc aceiasi rutina de alocare a bitilor. Procesul de decodare este mai simplu deoarece se primesc (la decodare) rezultate intermediare de la calculul facut la codare. Astfel nu mai este necear calculul corespunzator si la decodare. Codorul are si posibilitatea de a transmite informatii despre alocarea bitilor pentru a facilita algoritmii de codare dezvoltati in viitor sa lucreze cu decodoarele existente.
Rezultatul calculului facut pentru alocarea bitilor este utilizat pentru a cuantiza mantisa coeficientilor TDAC. In loc sa se trimita direct valoarea celor mai semnificativi "n" biti, valoarea este scalata si ajustata pentru a oferi nivele de cuantizare simetrice, egal distantate, centrate pe zero pentru a minimiza eroarea de cuantizare si pentru a facilita procesul de dither substraciv. Procese compensatorii sunt efectuate in decodor la nivelul blocului de despachetare a mantisei pentru a reface valoarea mantisei (initiale).
Codorul poate alica optional procesul de dither asupra mantise in timpul cuantizarii ei. Daca se utilizeaza dither-ul se vor transmite mai multi biti catre fluxul de codare furnizandu-se astfel informatii de sincronizare astfel incat decodorul sa poata extrage exact aceleasi date (dither) pentru a reconstitui mantisa. Folosirea unui generator de numere pseudo-aleatoare a fost aleasa nu numai in scopul obtinerii unor proprietati aleatoare bune, dar si pentru a produce rezultate identice indiferent de platforma hardware folosita.
Procesul descris anterior converteste cele 6 semnale corespunzatoare celor 6 canale intr-o serie de vectori si valori scalare care includ exponentii si mantisele coeficientilor TDAC, informatia de alocare a bitilor, coeficientii de cuplaj si flag-urile de dither. In finalul procesului de codare aceasta informatie este impachetata intr-un singur bloc continand informatia de sincronizare, un header, informatii pentru corectia erorilor si optional diverse alte informatii. Datele sunt impachetate "cu grija" intr-o forma cauzala pentru ca decodorul sa le poata despacheta.
IV. PRINCIPALELE BLOCURI DE PROCESARE ALE DECODORULUI
Fiecare bloc primit spre decodare este verificat in privinta consistentei interne a datelor in prezenta unor informatii de stare furnizate de un procesor de corectie a erorilor optional. Daca se detecteaza o eroare necorectabila decodorul poate reutiliza blocul de date primit anterior si recunoscut ca fiind fara erori in locul celui curent ascunzand astfel erorile. Repetarea unui bloc de date in procesul de refacere a datelor initiale poate fi facuta, daca este necesar, de cateva ori fara a afecta perceptibil semnalul. Daca exista mai multe blocuri consecutive eronate atunci se foloseste metoda mutting sau in aplicatii de genul coloanei sonor a unui film se foloseste, pe portiunea eronata, pista analogica care coexista la inregistrarea respectiva.
c. Despachetarea Datelor in Format Fix
Acest proces presupune doua etape. In prima etapa sunt despachetate datele care contin coeficientii de cuplaj, exponentii si flag-urile de mod. Apoi aceste informatii sunt folosite de decodor pentru a reface alocarea bitilor informatiile rezultate fiind utilizate pentru a reface datele in format fix, in principal vectorii ce contin mantisele coeficientilor TDAC.
d. Decodarea Informatiei de Alocare a Bitilor
Rutina de decodare a informatiei de alocare a bitilor este aproape identica cu cea folosita in blocul de codare, exceptie facand faptul ca se folosesc rezultate intermediare pentru a economisi timp. Acest aranjament permite decodorului sa proceseze alocarea bitilor pe rand, pentru fiecare canal, reducandu-se astfel necesarul de memorie al decodorului.
Alocarea bitilor in decodor trebuie sa se potiveasca exact cu cea facuta la codare pentru a se putea despacheta corect datele in format variabil, altfel se vor introduce zgomote artificiale la iesire.
e. Despachetarea Datelor in Format Variabil
Informatia obtinuta anterior, specificand marimea pasului de cuantizare pentru fiecare mantisa, este folosita pentru a despacheta datele in format variabil din fluxul de date codate.
f. Conversia la Virgula Fixa
In procesul de pregatire pentru aplicarea transformatei inverse TDAC, datele reprezentand exponentul si mantisa sunt combinate pentru a reface coeficientii TDAC in formatul cu virgula fixa. Daca este folosit dither-ul, atunci el este eliminat in acest punct al procesarii.
g. Reinserarea Purtatoarei de Frecventa Inalta
Coeficientii corespunzatori frecventelor inalte au fost codati ca informatie despre purtatoare si anvelopa. Acum ei sunt refacuti combinand purtatoarele cu coeficientii de cuplaj corespunzatori.
h. Transformarea Inversa
Coeficientii transformarii TDAC corespunzatoare fiecarui canal sunt transformati folosind transformarea TDAC inversa pentru a obtine semnalul initial in domeniul timp. Coeficientii TDAC ai canalului Subwoofer sunt trecuti printr-un proces care reduce la tacere coeficientii corespunzatori frecventelor medii si inalte inainte de transformarea inversa.
Consideratiile realizarii practice a hardware-ului au fost un element important in proiectarea algoritmului AC-3. Detaliile operarii interne au fost alese in asa fel incat sa faciliteze implementarea pe platformele DSP existente si portarea usoara pe alte platforme. Initial codorul a fost realizat cu 6 procesoare Motorola 56001 la 27MHz decodorul necesitand inca 5 procesoare in plus. In aceasta implementare s-a folosit o arhitectura pipeline. Versiuni ulterioare au fost realizate intr-un singur chip (codorul si decodorul) Zoran ZR-38000 proiectat special pentru acest tip de aplicatii.
Sintaxa fluxului de date si operarea decodorului au fost flexibil proiectate pentru a permite imbunatatiri ulterioare ale algorimului de codare pastrand in acelasi timp compatibilitatea cu decodoarele hardware existente.
Formatul de date a fost astfel proiectat incat permite editarea la nivel de bloc fara a mai fi necesara recodarea. Aceasta facilitate este foarte importanta in aplicatiile care utilizeaza des editarea deoarece decompresia si recompresia repetata duce la degradarea sensibila a calitatii semnalului audio.
Aici au fost descrise principalele etape ale algoritmului AC-3 in alte situatii putand fi necesare si alte prelucrari. De exemplu in aplicatiile "broadcast quality " este necesar si un bloc de reglare a nivelului compresiei care ar permite ascultatorului sa aleaga intre modurile : comprimat, partial-comprimat sau necomprimat.
Pentru situatii in care sunt disponibile mai putin de 5.1 canale este disponibil un mixer care reduce cele 5.1 canale numarul de canale disponibile, chiar producand un semnal valid stereo Dolby Surround Lt/Rt. Mixere dedicate (de exemplu pentru decodarea sunetului pe doar doua canale) pot fi implementate cu un decodor hardware simplificat care mixeaza canalele cand datele sunt inca in domeniul transfotmatei TDAC.
AC-3 este folosit de cativa ani in producerea coloanei sonore a filmelor. Alte posibile aplicatii ar fi: HDTV, laserdisc, VCR, multimedia etc. Disponibilitatea sa ar putea forta si alte domenii sa adopte acest format de sunet.
www.dolby.com